package com.wanmait.teatrain.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import java.util.Date;
import java.util.List;

import lombok.Data;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;

/**
 * <p>
 * 菜单权限表
 * </p>
 *
 * @author wanmait
 * @since 2025-10-22
 */
@Data
@Accessors(chain = true)
public class Menu {

    /**
     * 菜单唯一标识，自增主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    /**
     * 菜单显示名称
     */
    private String menuName;

    /**
     * 父菜单ID，用于构建树形结构
     */
    private Integer parentId;

    /**
     * 菜单显示顺序，数值越小越靠前
     */
    private Integer sort;

    /**
     * 路由地址（前端路由路径）
     */
    private String path;

    /**
     * 组件路径（前端组件文件路径）
     */
    private String component;

    /**
     * 路由参数（URL查询参数）
     */
    private String query;

    /**
     * 菜单类型：目录/菜单项/按钮
     */
    private String type;

    /**
     * 显示状态（1显示 0隐藏）
     */
    private Boolean visible;

    /**
     * 停用状态（0正常 1停用）
     */
    private Boolean stop;

    /**
     * 是否外链（1是 0否）
     */
    private Boolean externalLink;

    /**
     * 权限标识（用于按钮级权限控制）
     */
    private String perms;

    /**
     * 菜单图标（前端图标名称）
     */
    private String icon;

    /**
     * 创建人ID
     */
    private Integer createAdminId;

    /**
     * 创建时间
     */
    private Date createTime;

    /**
     * 更新时间（自动更新）
     */
    private Date updateTime;

    /**
     * 备注信息
     */
    private String remark;

    /**
     * 逻辑删除标志（1未删除 0已删除）
     */
    private Boolean enable;

    //子菜单
    @TableField(exist = false)
    private List<Menu> children;
}
